const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    // LIFE-CYCLE CALLBACKS:
    // 方向
    direct: cc.Vec2 = cc.v2(0, 1);
    // 刚体
    gp:cc.PhysicsManager

    onLoad () {
        this.gp = cc.director.getPhysicsManager();
        this.gp.enabled = true;
        
    }

    start () {
        // // 使用射线一定要注意，在onload中射出，不会返回结果
        // // 射出一条射线  参数1是起点，参数二是方向位置，参数3是类型
        // let res = this.gp.rayCast(this.node.getPosition(), cc.v2(this.node.getPosition().x, this.node.getPosition().y - 300), cc.RayCastType.AllClosest )

        // console.log(res[0].collider);

        // for(let i = 0; i < res.length; i++) {
        //     let r = res[i];
        //     // 射线碰到的碰撞器
        //     // res.collider
        //     // 碰到的点
        //     // res.point
        //     // 碰到的法线
        //     // res.normal
        // }

    }

    update (dt) {
        this.node.y += this.direct.y * 200 * dt;
        
        // // 射出一条射线  参数1是起点，参数二是方向位置，参数3是类型
        let results = this.gp.rayCast(this.node.getPosition(), cc.v2(this.node.x, this.node.y + this.direct.y * 50), cc.RayCastType.AllClosest )

        if(results.length > 0) {
            // console.log(results);
            this.direct.y *= -1;
        }
        
        
    }

    // 开始碰撞
    onBeginContact(contact, self, other) {
        // 获取碰撞点
        let points = contact.getWorldManifold().points;

        console.log('发生碰撞，碰撞点：' + points[0]);
        
    }

    // 结束碰撞
    onEndContact(contact, self, other) {

    }
}
